﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace PSB
{
    class Player
    {
        public int Money;
        public int Experience;
        public int PowerLevel;
        public int IncomeRate;
        public int UnitCount;
        public int StructureCount;

        public string Name;
        public string Color;
        public string Faction;

        public enum PlayerMode
        {
            CreationMode,       // Creation mode is for when the ingame circle menu pops up
            BuildingMode,       // Building mode is for when you are out of creation mode but are creating buildings
            SpawingMode,        // Spawning mode is for when you are out of creation mode but are spawning units
            SetRallyMode        // SetRally mode is for when you want to specify a rally point for a building
        }

        public List<Unit> UnitList;
        public List<Structure> StructureList;


        public Player()
        {
            // Trivial constructor
        }

        public Player(string name)
        {
            // Non-trivial constructor
        }

        public Unit SpawnUnit()
        {
            // Fill in with proper logic
            Unit tempunit = new Unit();
            return tempunit;
        }

        public Structure SpawnStructure()
        {
            // Fill in with proper logic
            Structure tempstruct = new Structure();
            return tempstruct;
        }
    }

    class HumanPlayer : Player
    {
        public GamePadState ControllerState;
        public Cursor PlayerCursor;
        public bool PressedA, PressedB, PressedX, PressedY, PressedRB, PressedLB, PressedStart, PressedSelect;

        public HumanPlayer()
        {
            // Trivial constructor
        }

        public HumanPlayer(string name)
        {
            // Non-trivial constructor
        }

        public void UpdatePlayer() {
            // Fill with update logic
        }
    }

    class AIPlayer : Player
    {
        public int IntelligenceLevel;

        public AIPlayer()
        {
            // Trivial constructor
        }

        public AIPlayer(string name)
        {
            // Non-trivial constructor
        }
    }
}
